package cn.wenzy.aurora.framework.support.validation.properties;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class ValidationRule {

    /**
     * 正则表达式
     */
    private String regex;

    /**
     * 长度，最多只接收2个数组元素，超过2个时只取前2个，且第二个数字不能小于第一个数字。例：<br/>
     * [6]：长度必须为6位；<br/>
     * [1,6]：1-6位长度；<br/>
     * [0,6]或[~,6]：最长6位；<br/>
     * [6,]：至少6位；<br/>
     * [6,1]：矛盾，任何字符都无法通过校验
     */
    private Integer[] length;

    /**
     * 以字母开头
     */
    private Boolean startWithLetter = true;

    /**
     * 包含大小字母
     */
    private Boolean withUppercaseLetters = true;

    /**
     * 包含小写字母
     */
    private Boolean withLowercaseLetters = true;

    /**
     * 包含数字
     */
    private Boolean withNumbers = true;

    /**
     * 不含中文
     */
    private Boolean noChinese = true;

    /**
     * 包含特殊字符
     */
    private SpecialCharacters specialCharacters = new SpecialCharacters();

    /**
     * 校验不通过时，提示信息，支持国际化编码
     */
    private String message;


    @Data
    public static class SpecialCharacters {
        private Boolean enabled = false;

        private String specialCharacters = "-_~!@#$%^&*,.;";
    }
}
